package com.irdstudio.efp.esb.api.bean.psd.credit.req;

import com.alibaba.fastjson.annotation.JSONField;
import com.irdstudio.basic.framework.core.annotation.DicType;
import com.irdstudio.basic.framework.core.constant.SDicCertTypeEnum;
import com.irdstudio.efp.esb.api.common.GroupeInterface;
import com.irdstudio.efp.esb.api.common.sed.SedApplyCurrCdEnum;
import com.irdstudio.efp.esb.common.constant.nls.*;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

public class PsdCreditApplyReqBean implements Serializable {

    /**
     * 预核额渠道申请号
     */
    @JSONField(name = "PreVrfcLmtChanAppNo")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 128, groups = {GroupeInterface.psd.class})
    private String channelApplyNo;
    /**
     * 授信申请流水号
     */
    @JSONField(name = "CrAppSrlNo")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 64, groups = {GroupeInterface.psd.class})
    private String crdtAppFlowNo;

    @JSONField(name = "MblNo")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 11, groups = {GroupeInterface.psd.class})
    private String mblNo;

    /**
     * 法定代表人证件地址
     */
    @JSONField(name = "CertAddr")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 256, groups = {GroupeInterface.psd.class})
    private String certAddr;

    /**
     * 法定代表人证件有效期
     */
    @JSONField(name = "IdenEfftDt")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 17, groups = {GroupeInterface.psd.class})
    private String idenEfftDt;
    /**
     * 放款卡号
     */
    @JSONField(name = "DistrCardNo")
    @Length(max = 32, groups = {GroupeInterface.psd.class})
    private String distrCardNo;
    /**
     * 还款卡号
     */
    @JSONField(name = "RpymtCardNo")
    @Length(max = 32, groups = {GroupeInterface.psd.class})
    private String bankCardNo;
    /**
     * 产品代码
     */
    @JSONField(name = "PdCd")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 32, groups = {GroupeInterface.psd.class})
    private String prodCd;
    /**
     * 贷款产品名称
     */
    @JSONField(name = "LoanPdNm")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 128, groups = {GroupeInterface.psd.class})
    private String loanProdNm;
    /*    *//**
     * 担保方式
     *//*
    @JSONField(name = "GrntMd")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 5, groups = {GroupeInterface.psd.class})
    @DicType(dicType = NlsGuarMdEnum.class, method = "getValue", groups = {GroupeInterface.psd.class})
    private String guarMd;*/
    /**
     * 交易币种
     */
    @JSONField(name = "TxnCcyCd")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 3, groups = {GroupeInterface.psd.class})
    @DicType(dicType = SedApplyCurrCdEnum.class, method = "getValue", groups = {GroupeInterface.psd.class})
    private String txnCurrCd;
    /*    *//**
     * 还款方式
     *//*
    @JSONField(name = "RpymtMd")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 20, groups = {GroupeInterface.psd.class})
    @DicType(dicType = NlsRpyMdEnum.class, method = "getValue", groups = {GroupeInterface.psd.class})
    private String rpyMd;*/
    /*    *//**
     * 还款日
     *//*
    @JSONField(name = "RpyDt")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 10, groups = {GroupeInterface.psd.class})
    private String rpyDt;*/
    /*    *//**
     * 还款日类型
     *//*
    @JSONField(name = "RpymtDtTp")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 5, groups = {GroupeInterface.psd.class})
    private String rpyMdType;*/
    /**
     * 申请日期
     */
    @JSONField(name = "AppDt")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 10, groups = {GroupeInterface.psd.class})
    private String aplDt;

    /**
     * 渠道号
     */
    @JSONField(name = "ChanNo")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 10, groups = {GroupeInterface.psd.class})
    private String chanNo;
    /**
     * 国籍
     */
    @JSONField(name = "Nation")
    @Length(max = 10, groups = {GroupeInterface.psd.class})
    @DicType(dicType = NlsNationEnum.class, method = "getValue", groups = {GroupeInterface.psd.class})
    private String nation;
    /**
     * 法定代表人职业代码
     */
    @JSONField(name = "CrrCd")
    @Length(max = 10, groups = {GroupeInterface.psd.class})
    @DicType(dicType = NlsCrrEnum.class, method = "getValue", groups = {GroupeInterface.psd.class})
    private String crrCd;
    /**
     * 法定代表人民族代码
     */
    @JSONField(name = "EthnicCd")
    @Length(max = 10, groups = {GroupeInterface.psd.class})
    @DicType(dicType = NlsEthnicEnum.class, method = "getValue", groups = {GroupeInterface.psd.class})
    private String ethnicCd;
    /**
     * 法定代表人学历代码
     */
    @JSONField(name = "EduCd")
    @Length(max = 10, groups = {GroupeInterface.psd.class})
    @DicType(dicType = NlsEduEnum.class, method = "getValue", groups = {GroupeInterface.psd.class})
    private String eduCd;
    /**
     * 法定代表人联系地址
     */
    @JSONField(name = "CtcAddr")
    @Length(max = 200, groups = {GroupeInterface.psd.class})
    private String ctcAddr;
    /**
     * 法定代表人婚姻状况
     */
    @JSONField(name = "MrgSitu")
    @Length(max = 8, groups = {GroupeInterface.psd.class})
    private String mrgSitu;
    /**
     * 法定代表人配偶姓名
     */
    @JSONField(name = "SpsNm")
    @Length(max = 64, groups = {GroupeInterface.psd.class})
    private String spsNm;
    /**
     * 法定代表人职称代码
     */
    @JSONField(name = "TtlCd")
    @Length(max = 10, groups = {GroupeInterface.psd.class})
    @DicType(dicType = NlsTtlEnum.class, method = "getValue", groups = {GroupeInterface.psd.class})
    private String ttlCd;
    /**
     * 协议勾选时间
     */
    @JSONField(name = "AgrmtChcTmstmp")
    @NotNull(groups = {GroupeInterface.psd.class})
    @NotEmpty(groups = {GroupeInterface.psd.class})
    @Length(max = 32, groups = {GroupeInterface.psd.class})
    private String timeStamp;

    public String getChannelApplyNo() {
        return channelApplyNo;
    }

    public void setChannelApplyNo(String channelApplyNo) {
        this.channelApplyNo = channelApplyNo;
    }

    public String getCrdtAppFlowNo() {
        return crdtAppFlowNo;
    }

    public void setCrdtAppFlowNo(String crdtAppFlowNo) {
        this.crdtAppFlowNo = crdtAppFlowNo;
    }

    public String getCertAddr() {
        return certAddr;
    }

    public void setCertAddr(String certAddr) {
        this.certAddr = certAddr;
    }

    public String getIdenEfftDt() {
        return idenEfftDt;
    }

    public void setIdenEfftDt(String idenEfftDt) {
        this.idenEfftDt = idenEfftDt;
    }

    public String getDistrCardNo() {
        return distrCardNo;
    }

    public void setDistrCardNo(String distrCardNo) {
        this.distrCardNo = distrCardNo;
    }

    public String getBankCardNo() {
        return bankCardNo;
    }

    public void setBankCardNo(String bankCardNo) {
        this.bankCardNo = bankCardNo;
    }

    public String getProdCd() {
        return prodCd;
    }

    public void setProdCd(String prodCd) {
        this.prodCd = prodCd;
    }

    public String getLoanProdNm() {
        return loanProdNm;
    }

    public void setLoanProdNm(String loanProdNm) {
        this.loanProdNm = loanProdNm;
    }

    public String getTxnCurrCd() {
        return txnCurrCd;
    }

    public void setTxnCurrCd(String txnCurrCd) {
        this.txnCurrCd = txnCurrCd;
    }


    public String getAplDt() {
        return aplDt;
    }

    public void setAplDt(String aplDt) {
        this.aplDt = aplDt;
    }

    public String getChanNo() {
        return chanNo;
    }

    public void setChanNo(String chanNo) {
        this.chanNo = chanNo;
    }

    public String getNation() {
        return nation;
    }

    public void setNation(String nation) {
        this.nation = nation;
    }

    public String getCrrCd() {
        return crrCd;
    }

    public void setCrrCd(String crrCd) {
        this.crrCd = crrCd;
    }

    public String getEthnicCd() {
        return ethnicCd;
    }

    public void setEthnicCd(String ethnicCd) {
        this.ethnicCd = ethnicCd;
    }

    public String getEduCd() {
        return eduCd;
    }

    public void setEduCd(String eduCd) {
        this.eduCd = eduCd;
    }

    public String getCtcAddr() {
        return ctcAddr;
    }

    public void setCtcAddr(String ctcAddr) {
        this.ctcAddr = ctcAddr;
    }

    public String getMrgSitu() {
        return mrgSitu;
    }

    public void setMrgSitu(String mrgSitu) {
        this.mrgSitu = mrgSitu;
    }

    public String getSpsNm() {
        return spsNm;
    }

    public void setSpsNm(String spsNm) {
        this.spsNm = spsNm;
    }

    public String getTtlCd() {
        return ttlCd;
    }

    public void setTtlCd(String ttlCd) {
        this.ttlCd = ttlCd;
    }

    public String getTimeStamp() {
        return timeStamp;
    }

    public void setTimeStamp(String timeStamp) {
        this.timeStamp = timeStamp;
    }

    public String getMblNo() {
        return mblNo;
    }

    public void setMblNo(String mblNo) {
        this.mblNo = mblNo;
    }
}
